50a618dfb230cf4461cb9bebfd3465a92b7c7327,java/java-analysis-impl/src/com/intellij/codeInspection/streamMigration/StreamApiMigrationInspection.java,TerminalBlock,extractOperation,#,1000
Before Change
PsiStatement lastStatement = myStatements[myStatements.length - 1];
if(lastStatement instanceof PsiBreakStatement && op.breaksMe((PsiBreakStatement)lastStatement) &&
ReferencesSearch.search(nextFilter.myVariable, new LocalSearchScope(myStatements)).findFirst() == null) {
myStatements = Arrays.copyOfRange(myStatements, 0, myStatements.length-1);
return new CompoundFilterOp(nextFilter, op);
}
}
After Change
// if t is not used in "...", then this could be converted to
// list.stream().filter(subList -> subList.stream().anyMatch(condition)).forEach(subList -> ...)
TerminalBlock withFlatMapFilter = withFlatMap.extractFilter();
if(withFlatMapFilter != null && !withFlatMapFilter.isEmpty()) {
PsiStatement[] statements = withFlatMapFilter.getStatements();
PsiStatement lastStatement = statements[statements.length-1];
if (lastStatement instanceof PsiBreakStatement && op.breaksMe((PsiBreakStatement)lastStatement) &&
ReferencesSearch.search(withFlatMapFilter.getVariable(), new LocalSearchScope(statements)).findFirst() == null) {
return new TerminalBlock(new CompoundFilterOp((FilterOp)withFlatMapFilter.getLastOperation(), op),
myVariable, Arrays.copyOfRange(statements, 0, statements.length-1));
}
}
}